﻿#ifndef LOGGER_H
#define LOGGER_H


/*
 * 变量:下划线命名法 注意前缀，下划线后首字母小写
    普通全局变量：g_test_value
    静态全局变量：t_test_value
    变量：test_value
    const 修饰:	  c_test_value

 *结构体：
    结构体内部变量：同变量
    结构体命名：	大驼峰命名法，首字母全部大写 TestStruct

 *函数：下划线命名法,参数名称的命名参照变量命名规范
    test_func(int a , int b);

 *宏命名:下划线命名法，下划线分隔,全字母大写
    #define TEST_VALUE

 *枚举、联合体：首字母E+大驼峰命名法,枚举成员常量用下划线分隔头，再加常量（其中枚举首字母为E,联合体为U）
    enum ETestMode {
       ETest_Mode_Value1，
       ETest_Mode_Value2，
    };

 *函数指针：下划线命名法，以p_开头
    p_test_func(int i,int j)

 *注意
    a.保证函数声明和定义时，参数的名称、类型和定义中的名称、类型一致
    b.为了便于某个指针参数是入口参数还是出口参数，应该在入口参数前加入const标志
        copy_string(const char * c_src, char * dst)
    c.除局部循环变量外，禁止取单个字符(如i 、j 、k... )变量名
    d.命名中若使用特殊约定或缩写，则要在源文件的开始之处有注释说明
*/


#include <QObject>
enum LOGGER_TYPE{
    LOGGER_TYPE_WARING ,
    LOGGER_TYPE_NORMAL ,
    LOGGER_TYPE_SUCCESS ,
      LOGGER_TYPE_WARING_DELETE ,
};
class Logger : public QObject
{
    Q_OBJECT
public:
    explicit Logger(QObject *parent = nullptr);

     static Logger* getInstance();

     void printf(QString str , int type = LOGGER_TYPE_NORMAL);

protected:

    static Logger* m_pLoggerObj;
signals:
  void evt_printfLog(QString str , int type = LOGGER_TYPE_NORMAL);
public slots:

};

#endif // LOGGER_H
